package cc.rengu.igas.share.facade.bean.cups;

import cc.rengu.oltp.service.common.enums.OltpRpcdEnum;
import cc.rengu.oltp.service.model.BizException;

import java.util.Arrays;

/**
 * F22 前两字节 PAN 输入方式
 *
 * @author fangminwei
 * @date 2021/4/17
 */
@SuppressWarnings("AlibabaEnumConstantsMustHaveComment")
public enum F22_1_PANEntryModCodeEnum {
    // 06 ISO 保留使用
// 08-60 ISO 保留使用
// 61-94 国家保留使用
// 96 私有保留使用
// 97 私有保留使用
// 99 私有保留使用
    _00("00", "未指明"),
    _01("01", "手工"),
    _02("02", "接触式读取磁条"),
    _03("03", "光学码读取（被扫，含芯片信息。二维码支付业务中的被扫模式，交易报文中将传递 F23、 F35、 F55 等芯片相关信息。）"),
    _04("04", "光学码读取（被扫，无卡。二维码支付业务中的被扫模式，交易报文中将不传递 F23、 F35、 F55 等芯片相关信息。）"),
    _05("05", "接触式读取集成电路（IC）卡，且信息可靠"),
    _07("07", "非接触式读取集成电路（IC）卡，且为 qUICS 应用"),
    _90("90", "接触式读取磁条，且读入信息可靠，第二磁道信息必须出现"),
    _91("91", "生物识别读取"),
    _93("93", "光学码读取（主扫，含芯片信息。二维码支付业务中的主扫模式，易报文中将传递 F23、 F35、 F55 等芯片相关信息。）"),
    _94("94", "光学码读取（主扫，无卡。二维码支付业务中的主扫模式，交易报文中将不传递 F23、 F35、 F55 等芯片相关信息。）"),
    _95("95", "接触式读取集成电路（IC）卡，且信息不可靠"),
    _98("98", "非接触式读取集成电路（IC） 卡，且为 UICS 借贷记应用"),
    ;

    private String code;
    private String desc;

    F22_1_PANEntryModCodeEnum(String code, String desc) {
        this.code = code;
        this.desc = desc;
    }

    public String getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    @Override
    public String toString() {
        return code + "-" + desc;
    }

    public static F22_1_PANEntryModCodeEnum find(String code) {
        F22_1_PANEntryModCodeEnum result = Arrays.stream(F22_1_PANEntryModCodeEnum.values())
                .filter(e -> e.getCode().equals(code)).findFirst().orElse(null);

        if (result == null) {
            throw new BizException(OltpRpcdEnum.PARAM_IS_EMPTY_OR_NULL.getRespCode(), "找不到对应的枚举信息" + code);
        }
        return result;
    }
}
